package com.wjr.braveheart.ui.mvp.example;


import com.wjr.braveheart.ui.mvp.IMvpBaseView;

import okhttp3.Callback;

/**
 * 契约类Contract
 * 通过契约类来管理Model、View、Presenter的所有接口，
 * 这样使得Presenter和View有哪些功能一目了然，维护起来也方便，
 * 同时使得View与Presenter一一对应，并有效地减少类的数目。
 */
public interface LoginContract {
    interface Model {

        /**
         * 登录
         *
         * @param user     用户信息
         * @param callback 回调
         */
        void login(User user, Callback callback);
    }

    interface View extends IMvpBaseView {


        /**
         * 返回用户信息
         */
        User getUserInfo();

        /**
         * 登录成功
         */
        void loginSuccess(User user);

    }

    interface Presenter {

        /**
         * 登录
         */
        void login();
    }
}
